Memory system and non-transitory computer readable recording medium

ABSTRACT

According to one embodiment, a memory system includes a nonvolatile memory, configuration unit, address translation unit, write unit and control unit. The configuration unit assigns write management areas included in the nonvolatile memory to spaces. The write management area is a unit of an area which manages the number of write. The address translation unit translates a logical address of write data into a physical address of a space corresponding to the write data. The write unit writes the write data to a position indicated by the physical address in the nonvolatile memory. The control unit controls the spaces individually with respect to the nonvolatile memory.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation U.S. application Ser. No. 14/656,405 filed on Mar. 12, 2015 and is based upon and claims the benefit of priority from U.S. Provisional Application No. 62/072,833, filed Oct. 30, 2014; and Japanese Patent Application No. 2015-028418, filed Feb. 17, 2015, the entire contents of all of which are incorporated herein by reference.

FIELD

Embodiments described herein relate generally to a memory system and a non-transitory computer readable recording medium.

BACKGROUND

A solid state drive (SSD) includes a nonvolatile semiconductor memory and has an interface which is similar to that of a hard disk drive (HDD). For example, at the time of data writing, the SSD receives a write command, logical block addressing (LBA) of a writing destination, and write data from an information processing device, translates the LBA into physical block addressing (PBA) based on a lookup table (LUT), and writes the write data to a position indicated by the PBA.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram showing an example of a structure of an information processing system according to a first embodiment;

FIG. 2 is a block diagram showing an example of a relationship between LBA spaces, namespaces, address translation tables, garbage collection units, and management data;

FIG. 3 is a flowchart showing an example of a process performed by a reception unit and a configuration unit according to the first embodiment;

FIG. 4 is a flow chart showing an example of a process performed by a garbage collection unit and an address translation unit according to the first embodiment;

FIG. 5 is a block diagram showing an example of a structure of an information processing system of a second embodiment;

FIG. 6 is a data structural diagram showing an example of a translation table according to the second embodiment;

FIG. 7 is a flowchart showing an example of a write process of a memory system according to the second embodiment;

FIG. 8 is a flowchart showing an example of a read process of the memory system of the second embodiment;

FIG. 9 is a block diagram showing an example of a structure of an information processing system according to a third embodiment; and

FIG. 10 is a perspective view showing a storage system according to the third embodiment.

DETAILED DESCRIPTION

In general, according to one embodiment, a memory system includes a nonvolatile memory, configuration unit, address translation unit, write unit and control unit. The configuration unit assigns write management areas included in the nonvolatile memory to spaces. The write management area is a unit of an area which manages the number of write. The address translation unit translates a logical address of write data into a physical address of a space corresponding to the write data. The write unit writes the write data to a position indicated by the physical address in the nonvolatile memory. The control unit controls the spaces individually with respect to the nonvolatile memory.

Embodiments will be described hereinafter with reference to drawings. In a following description, the same reference numerals denote components having nearly the same functions and arrangements, and a repetitive description thereof will be given if necessary. In the following embodiments, access means both data reading and data writing.

First Embodiment

FIG. 1 is a block diagram showing an example of a structure of an information processing system according to the present embodiment.

An information processing system 1 includes an information processing device 2 and a memory system 3. The information processing system 1 may include a plurality of information processing device 2. A case where the information processing system 1 includes a plurality of information processing device 2 is explained later in a second embodiment.

The memory system 3 is, for example, an SSD, and includes a controller 4 and a nonvolatile memory 5. The memory system 3 may be included in the information processing device 2, and the information processing device 2 and the memory system 3 may be connected through a network in a data communicative manner.

In the present embodiment, at least one NAND flash memory is used as the nonvolatile memory 5. However, the present embodiment can be applied to various nonvolatile memories including a plurality of write management areas, and such various nonvolatile memories may be, for example, a NOR flash memory, magnetoresistive random access memory (MRAM), phase change random access memory (PRAM), resistive random access memory (ReRAM), and ferroelectric random access memory (FeRAM). Here, the write management area is an area of a unit which manages the number of writes. The nonvolatile memory 5 may include a three dimensional memory.

For example, the nonvolatile memory 5 includes a plurality of blocks (physical blocks). The plurality of blocks include a plurality of memory cells arranged at crossing points of word lines and bit lines. In the nonvolatile memory 5, data are erased at once block by block. That is, a block is an area of a unit of data erase. Data write and data read are performed page by page (word line by word line) in each block. That is, a page is an area of a unit of data write or an area of a unit of data read.

In the present embodiment, the number of writes is managed block by block.

The information processing device 2 is a host device of the memory system 3. The information processing device 2 sends a configuration command C1 which associates the blocks of the nonvolatile memory 5 with a space including at least one block to the memory system 3.

In the following description, the space will be explained as a namespace.

Furthermore, the information processing device 2 sends a write command C2 together with namespace identification data (NSID) 6, LBA7 which indicates a writing destination, data size 8 of the write data, and write data 9 to the memory system 3.

In the present embodiment, a plurality of namespaces NS₀ to NS_(M) (M is an integer which is 1 or more) are each space which can be obtained from dividing a plurality of blocks B₀ to B_(N) (N is an integer which is M or more) included in the nonvolatile memory 5. In the present embodiment, the namespace NS₀ includes the blocks B₀ to B₂, and the namespace NS_(M) includes the blocks B_(N-2) to B_(N). The other namespaces NS₁ to NS_(M-1) are the same as the namespaces NS₀ and NS_(M). Note that the assignment relationship between the namespaces NS₀ to NS_(M) and the blocks B₀ to B_(N) is an example, and the number of the blocks to be assigned to a single namespace can be arbitrarily changed. The number of blocks may be different between namespaces.

The controller 4 includes a memory unit 10, buffer memories F₀ to F_(M), and a processor 11.

The memory unit 10 stores address translation tables T₀ to T_(M) corresponding to their respective namespaces NS₀ to NS_(M). For example, the memory unit 10 may be used as a work memory. The memory unit 10 may be a volatile memory such as dynamic random access memory (DRAM) or static random access memory (SRAM), or may be a nonvolatile memory. The memory unit 10 may be a combination of a volatile memory and a nonvolatile memory.

Each of address translation tables T₀ to T_(M) is data associating LBA with PBA based on the data write with respect to namespaces NS₀ to NS_(M), and may be LUT, for example. Note that a part of or the whole address translation tables T0 to TM may be stored in a different memory such as memory 12.

Each of buffer memories F₀ to F_(M) stores the write data until a data amount becomes suitable based on the data write with respect to namespaces NS₀ to NS_(M).

The processor 11 includes a memory 12, reception unit 13, configuration unit 14, address translation unit 15, write unit 16, and garbage collection unit G₀ to G_(M).

The memory 12 stores a program 17 and management data 18. In the present embodiment, the memory 12 is included in the processor 11; however, it may be provided outside the processor 11. The memory 12 is, for example, a nonvolatile memory. Note that a part of or the whole program 17 and management data 18 may be stored in a different memory such as the memory unit 10.

The program 17 is, for example, a firmware. The processor 11 executes the program 17 to function as the reception unit 13, configuration unit 14, address translation unit 15, write unit 16, and garbage collection units G₀ to G_(M).

The management data 18 indicates a relationship between the namespaces NS₀ to NS_(M) and the blocks B₀ to B_(N). Referring to the management data 18, which block is in which namespace can be determined.

The reception unit 13 receives, from the information processing device 2, the configuration command C1 to associate each block with each namespace in the nonvolatile memory 5. Furthermore, the reception unit 13 receives, from the information processing device 2, the write command C2, NSID6, LBA7, data size 8, and data 9.

In the following description, a case where the write commend C2 is with the NSID6 which represents the namespace NS₀ is explained for the sake of simplification. However, the write command C2 can be with the NSID which represents the other namespaces NS₁ to NS_(M).

When the reception unit 13 receives the configuration command C1 of the namespace, the configuration unit 14 assigns the blocks B₀ to B_(N) to the namespaces NS₀ to NS_(M) to generate the management data 18 and stores the management data 18 in the memory 12. The assignment of the blocks B₀ to B_(N) to the namespaces NS₀ to NS_(M) may be performed by the configuration unit 14 observing data storage conditions of the namespaces NS₀ to NS_(M) in such a manner that the data capacities, access frequencies, write frequencies, the numbers of accesses, the numbers of writes, or data storage ratios are set to the same level between the namespaces NS₀ to NS_(M). Or, the assignment may be performed based on an instruction from the information processing device 2, or an instruction from the manager of the memory system 3.

The data capacity here is a writable data size, the access frequency or the write frequency is the number of accesses or the number of writes per unit time, and the data storage ratio is a value which indicates a ratio of an area size which the data is already stored with respect to an area size.

Furthermore, the configuration unit 14 transfers an empty block in which no data is stored from a namespace categorized as pre-garbage collection to the other namespace based on the garbage collection result executed for each of the namespaces NS₀ to NS_(M), and updates the management data 18. Thus, the wear leveling can be performed between the namespaces NS₀ to NS_(M). The assignment change between the namespaces NS₀ to NS_(M) and the blocks B₀ to B_(N) may be performed by the configuration unit 14 observing the data storage conditions of the namespaces NS₀ to NS_(M) based on an observation result as in the time of generation of the management data 18. Or, the assignment change may be performed based on an instruction from the information processing device 2 or an instruction from the manager of the memory system 3. For example, the change of the namespaces NS₀ to NS_(M) are performed to convert the empty block of the namespace with lower data capacity, lower access frequency, lower number of access, or lower data storage ratio to the namespace with higher data capacity, higher access frequency, higher number of access, or higher data storage ratio.

Furthermore, the configuration unit 14 sets provisioning areas P₀ to P_(M) which are not normally used for each of the namespaces NS₀ to NS_(M) in the nonvolatile memory 5 based on the configuration command C1 for over provisioning. The setting of the provisioning areas P₀ to P_(M) may be performed by the configuration unit 14 based on the data capacity of each of the namespaces NS₀ to NS_(M). Or, the setting may be performed based on an instruction from the information processing device 2, or an instruction from the manager of the memory system 3.

In the present embodiment, the provisioning areas P₀ to P_(M) are secured in the nonvolatile memory 5; however, they may be secured in any other memory in the memory system 3. For example, the provisioning areas P₀ to P_(M) may be secured in a memory such as DRAM or static random access memory (SRAM).

When the reception unit 13 receives the write command C2, the address translation unit 15 executes associating to translate the LBA7 with the write command C2 into the PBA for the address translation table T₀ corresponding to the namespace NS₀ which indicates the NSID 6 with the write command C2.

In the present embodiment, the address translation unit 15 is achieved by the processor 11; however, the address translation unit 15 may be structured separately from the processor 11.

Furthermore, the address translation unit 15 performs the address translation based on the address translation tables T₀ to T_(M); however, the address translation may be performed by a key-value type retrieval. For example, the LBA is set as a key and the PBA is set as a value for achieving the address translation by key-value type retrieval.

The write unit 16 writes the write data 9 in a position indicated by the PBA obtained from the address translation unit 15. In the present embodiment, the write unit 16 stores the write data 9 in the buffer memory F₀ corresponding to the namespace NS₀ indicated by the NSID6 with the write command C2. Then, the write unit 16 writes the data of the buffer memory F₀ to a position indicated by the PBA when the buffer memory F₀ reaches a data amount suitable for the namespace NS₀.

The garbage collection units G₀ to G_(M) correspond to the namespaces NS₀ to NS_(M) and execute the garbage collection in each of the namespaces NS₀ to NS_(M). The garbage collection is a process to release an unnecessary memory area or a process to secure a continuous available memory area by collecting data written in a memory area with gaps. The garbage collection units G₀ to G_(M) may be configured to execute garbage collections in parallel, or consecutively.

The garbage collection is explained in detail using the garbage collection unit G₀ as an example selected from the garbage collection unit G₀ to G_(M). The garbage collection unit G₀ first selects the blocks B₀ to B₂ corresponding to the namespace NS₀ based on the management data 18. Then, the garbage collection unit G₀ performs the garbage collection with respect to the selected blocks B₀ to B₂. Then, based on a result of the garbage collection performed by the garbage collection unit G₀, the address translation unit 15 updates the address translation table T₀.

Note that, in the present embodiment, the LBA and the PBA are associated with each other in the address translation tables T₀ to T_(M) and the block identifiable by the PBA and the NSID are associated with each other in the management data 18. Therefore, when LBA is a unique address without redundant other LBA and the management data 18 is generated, the namespace NS₀ which is a writing destination can be specified from the LBA 7 attached to the write command C2 at the processor 11 side. Therefore, after the generation of the management data 18 without redundant LBA 7, attaching the NSID 6 to the write command C2 can be omitted, and the NSID 6 may be acquired at the processor 11 side based on the LBA 7, address translation tables T₀ to T_(M), and management data 18.

FIG. 2 is a block diagram showing an example of a relationship between LBA spaces, the namespaces NS₀ to NS_(M), the address translation tables T₀ to T_(M), the garbage collection units G₀ to G_(M), and the management data 18.

LBA spaces A₀ to A_(M) of the information processing device 2 are assigned to the namespaces NS₀ to NS_(M), respectively.

The LBA space A₀ includes logical addresses 0 to E₀. The LBA space A₁ includes logical addresses 0 to E₁. The LBA space A_(M) includes logical addresses 0 to E_(M). The other LBA spaces A₂ to A_(M-1) include a plurality of logical addresses similarly.

In the following description, the LBA space A₀ and the namespace NS₀ assigned to the LBA space A₀ are explained representatively for the sake of simplification. However, the other LBA spaces A₁ to A_(M) and namespaces NS₁ to NS_(M) are structured the same.

When writing the data of the LBA space A₀ to the nonvolatile memory 5, the information processing device 2 sends the write command C2, NSID 6 indicating the namespace NS₀ corresponding to the LBA space A₀, LBA 7 within LBA space A₀, data size 8, and write data 9 corresponding to the LBA 7 to the memory system 3.

The management data 18 associates the namespace NS₀ with the blocks B₀ to B₂.

The garbage collection unit G₀ performs the garbage collection with respect to the blocks B₀ to B₂ included in the namespace NS₀ corresponding to the garbage collection unit G₀ based on the management data 18.

As a result of the garbage collection, data arrangement will be changed within the blocks B₀ to B₂. Therefore, the garbage collection unit G₀ instructs the address translation unit 15 which is omitted in FIG. 2 to perform the update of address translation table T₀. The address translation unit 15 updates the address translation table T₀ corresponding to the namespace NS₀ to match the data arrangement after the garbage collection.

FIG. 3 is a flowchart showing an example of a process performed by the reception unit 13 and the configuration unit 14 according to the present embodiment.

In step S301, the reception unit 13 receives the configuration command C1 of the namespaces NS₀ to NS_(M).

In step S302, the configuration unit 14 assigns the blocks B₀ to B_(N) of the nonvolatile memory 5 to the namespaces NS₀ to NS_(M) and generates the management data 18.

In step S303, the configuration unit 14 stores the management data 18 in the memory 12.

FIG. 4 is a flow chart showing an example of a process performed by the garbage collection unit G₀ and the address translation unit 15 according to the present embodiment. Note that the same process is executed in the other garbage collection units G₁ to G_(M). The process shown in FIG. 4 may be performed based on an instruction from the information processing device 2, for example. Or, the process may be performed based on an instruction from the manager of the memory system 3. Furthermore, the garbage collection unit G₀ may execute the process of FIG. 4 voluntarily by, for example, observing the data storage condition of the namespace NS₀ of the garbage collection target and determining the start of the garbage collection appropriately. More specifically, the garbage collection unit G₀ executes the garbage collection with respect to the namespace NS₀ when the number of empty blocks within the namespace NS₀ is a predetermined number or less, or when a ratio of empty blocks to the whole blocks within the namespace NS₀ is a predetermined value or less.

In step S401, the garbage collection unit G₀ selects the blocks B₀ to B₂ corresponding to the namespace NS₀ which is the garbage collection target based on the management data 18.

In step S402, the garbage collection unit G₀ executes the garbage collection with respect to the blocks B₀ to B₂ within the selected namespace NS₀.

In step S403, the address translation unit 15 updates the address translation table T₀ corresponding to the namespace NS₀ which is the garbage collection target based on the conditions of the blocks B₀ to B₂ after the garbage collection.

In the present embodiment explained as above, a predetermined block amount or a block amount set by the information processing device 2 can be assigned to each of the namespaces NS₀ to NS_(M), and the data corresponding to the namespaces NS₀ to NS_(M) can be written to the blocks B₀ to B_(M) assigned to the namespaces NS₀ to NS_(M), and different data amounts can be set to the namespaces NS₀ to NS_(M).

In the present embodiment, the garbage collection can be performed in each of the namespaces NS₀ to NS_(M) independently and efficiently.

In the present embodiment, as a result of the garbage collection, the empty block which do not store data can be transferred from the namespace before the garbage collection to the other namespace, and the empty block can be secured within the other namespace. Therefore, the namespace to be assigned to the block can be changed, the wear leveling can be performed between the namespaces NS₀ to NS_(M), and the life of the nonvolatile memory 5 can be prolonged.

In the present embodiment, the provisioning areas P₀ to P_(M) having different data amounts can be set in each of the namespaces NS₀ to NS_(M), and the over provisioning can be achieved in each of the namespaces NS₀ to NS_(M). Thus, the write speed can be accelerated and performance can be maintained, and consequently, the reliability can be improved.

In the present embodiment, the address translation tables T₀ to T_(M) are managed for each of the namespaces NS₀ to NS_(M), and the address translation and changing of the relationship between the LBA and PBA can be performed efficiently in each of the namespaces NS₀ to NS_(M).

In the present embodiment, if the address translation is performed by the key-value type retrieval, even the data volume of the nonvolatile memory 5 is large, the address translation can be performed efficiently.

In the present embodiment, highly sophisticated memory management can be achieved in each of the namespaces NS₀ to NS_(M), the life of the nonvolatile memory 5 can be prolonged, the production costs can be reduced, and write/read processes to/from the nonvolatile memory 5 divided by the namespaces NS₀ to NS_(M) can be rapid.

In the present embodiment, a compaction unit of each of the namespaces NS₀ to NS_(M) may be provided instead of or together with garbage collection units G₀ to G_(M). The compaction unit corresponding to each of namespaces NS₀ to NS_(M) executes compaction with respect to each of the namespaces NS₀ to NS_(M) based on the management data 18.

In the present embodiment, the communication of configuration command C1 between, for example, the information processing device 2 and the memory system 3 may be omitted. For example, the address translation unit 15 may include a part of or the whole functions of the configuration unit 14. For example, the address translation unit 15 may generate the management data 18 and address translation tables T₀ to T_(M) of the namespaces NS₀ to NS_(M) by associating the NSID 6 and LBA 7 added to the write command C2 with the PBA corresponding to the LBA 7. The management data 18 and the address translation tables T₀ to T_(M) may be coupled or divided arbitrarily. The structure in which the communication of the configuration command C1 is omitted and the address translation unit 15 includes a part of or the whole functions of the configuration unit 14 is explained in detail in the following second embodiment.

Second Embodiment

In the present embodiment, explained is an information processing system in which a memory system writes write data from a plurality of information processing devices and sends the read data to the information processing devices.

FIG. 5 is a block diagram showing an example of a structure of an information processing system of the present embodiment.

An information processing system 1A includes a plurality of information processing devices D₀ to D_(M) and a memory system 3A. Each of the information processing devices D₀ to D_(M) functions similarly to the information processing device 2. The memory system 3A differs from the above memory system 3 mainly because it includes a translation table (translation data) 20 instead of the address translation tables T₀ to T_(M) and management data 18, it transmits/receives data, information, signal, and command to/from the information processing devices D₀ to D_(M), and the address translation unit 15 functions as the configuration unit 14. In the present embodiment, differences from the first embodiment are explained, and the same explanation or substantially the same explanation may be omitted or simplified.

The memory system 3A is included in, for example, a cloud computing system. In the present embodiment, a case where the memory system 3A is shared with the information processing devices D₀ to D_(M) is exemplified; however, it may be shared with a plurality of users. At least one of the information processing devices D₀ to D_(M) may be a virtual machine.

In the present embodiment, NSID added to a command is used as an access key to namespaces.

In the present embodiment, the information processing devices D₀ to D_(M) have access rights to their corresponding namespaces NS₀ to NS_(M). However, only a single information processing device may have access rights to one or more namespaces, or a plurality of information processing devices may have an access right to a common namespace.

Each of the information processing devices D₀ to D_(M) transfers, together with the write command C2, an NSID 6W indicative of its corresponding write destination space, LBA 7W indicative of the write destination, data size 8, and write data 9W to the memory system 3A.

Each of the information processing devices D₀ to D_(M) transfers, together with a read command C3, an NSID 6R indicative of its corresponding read destination space, and LBA 7R indicative of the read destination to the memory system 3A.

Each of the information processing devices D₀ to D_(M) receives read data 9R corresponding to the read command C3 or information indicative of a read error from the memory system 3A.

The memory system 3A includes a controller 4A and the nonvolatile memory 5.

The controller 4A includes an interface unit 19, memory unit 10, buffer memory F₀ to F_(M), and processor 11. In the present embodiment, the number of processor 11 in the controller 4A can be changed optionally to be one or more.

The interface unit 19 transmits/receives data, information, signal, and command to/from external devices such as the information processing devices D₀ to D_(M).

The memory unit 10 stores a translation table 20. A part of or the whole translation table 20 may be stored in a different memory such as the memory 12.

The translation table 20 is data which associates the LBA, PBA, and NSID with each other. The translation table 20 is explained later with reference to FIG. 6 .

The buffer memories F₀ to F_(M) are used for write buffer memories and read buffer memories with respect to namespaces NS₀ to NS_(M).

The processor 11 includes the memory 12 storing the program 17, reception unit 13, address translation unit 15, write unit 16, read unit 21, and garbage collection units G₀ to G_(M). When the program 17 is executed, the processor 11 functions as the reception unit 13, address translation unit 15, write unit 16, read unit 21, and garbage collection units G₀ to G_(M).

The reception unit 13 receives, at the time of data write, the write command C2, NSID 6W, LBA 7W, data size 8, and write data 9W from the information processing devices D₀ to D_(M) through the interface unit 19.

The reception unit 13 receives, at the time of data read, the read command C3, NSID 6R, and LBA 7R from the information processing devices D₀ to D_(M) through the interface unit 19.

When the reception unit 13 receives the write command C2, based on the LBA 7W and NSID 6W added to the write command C2, the address translation unit 15 determines the PBA of the write destination in the namespace indicated by the NSID 6W. The address translation unit 15 then updates the translation table 20 associating the LBA 7W, NSID 6W, and determined PBA with each other.

When the read command C3 is received by the reception unit 13, based on the LBA 7R and NSID 6R added to the read command C3, and the translation table 20, the address translation unit 15 determines the PBA of the read destination indicated by the NSID 6R.

The write unit 16 writes the write data 9W at a position indicated by the PBA corresponding to the namespace indicated by the NSID 6W via a buffer memory corresponding to the namespace indicated by the NSID 6W.

The read unit 21 reads the read data 9R from the position indicated by the PBA corresponding to the namespace indicated by NSID 6R via the buffer memory corresponding to the namespace indicated by NSID 6R. Then, the read unit 21 sends the read data 9R to the information processing device issuing the read commend C3 via the interface unit 19.

In the present embodiment, the garbage collection units G₀ to G_(M) execute garbage collection of each of the namespaces NS₀ to NS_(M) based on the translation table 20.

FIG. 6 is a data structural diagram showing an example of the translation table 20 according to the present embodiment.

The translation table 20 manages the LBA, PBA, and NSID with each other. For example, the translation table 20 associates the LBA 200, PBA 300, and NS₀ with each other. For example, the translation table 20 associates the LBA 201, PBA 301, and NS₀ with each other. For example, the translation table 20 associates the LBA 200, PBA 399, and NSM with each other.

The address translation unit 15 determines the PBA such that the PBA 300 associated with the LBA 200 and the NSID indicative of the namespace NS₀ and PBA 399 associated with the LBA 200 and the NSID indicative of the namespace NS_(M) differ from each other.

Thus, the address translation unit 15 can select PBA 300 when the NSID received with the LBA 200 indicates the namespace NS₀ and select PBA 399 when the NSID received with the LBA 200 indicates the namespace NS_(M).

Therefore, even if the same logical address is used between a plurality of information processing devices D₀ to D_(M), the memory system 3A can be shared with the information processing devices D₀ to D_(M).

FIG. 7 is a flowchart showing an example of a write process of the memory system 3A according to the present embodiment.

As to FIG. 7 , the explanation thereof is presented given that the write command C2 is issued from the information processing device D₀ amongst the information processing devices D₀ to D_(M), and the NSID 6W which indicates the namespace NS₀ is added to the write command C2. However, the process is performed similarly when the write commend C2 is issued from any of the information processing devices D₁ to D_(M). Furthermore, the process is performed similarly when the NSID 6W which indicates any of the other namespaces NS₁ to NS_(M) is added to the write command C2.

In step S701, the reception unit 13 receives the write command C2, NSID 6W, LBA 7W, data size 8, and write data 9W from the information processing device D₀ via the interface unit 19.

In step S702, when the write command C2 is received by the reception unit 13, based on the LBA 7W and NSID 6W added to the write command C2, the address translation unit 15 determines the PBA of a write destination in the namespace NS₀ indicated by the NSID 6W.

In step S703, the address translation unit 15 updates the translation table 20 associating the LBA 7W, NSID 6W, determined PBA with each other.

In step S704, the write unit 16 writes the write data 9W at a position indicated by the PBA corresponding to the namespace NS₀ indicated by the NSID 6W via the buffer memory F₀ corresponding to the namespace NS₀ indicated by the NSID 6W.

FIG. 8 is a flowchart showing an example of a read process of the memory system 3A according to the present embodiment.

As to FIG. 8 , the explanation is presented given that the read command C3 is issued from information processing device DM amongst the information processing devices D₀ to D_(M), and the NSID 6R which indicates the namespace NS_(M) is added to the read command C3. However, the process is performed similarly when the read commend C3 is issued from any of the information processing devices D₁ to D_(M-1). Furthermore, the process is performed similarly when the NSID 6R which indicates any of the other namespaces NS₁ to NS_(M-1) is added to the read command C3.

In step S801, the reception unit 13 receives the read command C3, NSID 6R, and LBA 7R from the information processing device D_(M) via the interface unit 19.

In step S802, when the read command C3 is received by the reception unit 13, based on the LBA 7R and NSID 6R added to the read command C3, and translation table 20, the address translation unit 15 determines the PBA of a read destination.

In step S803, the read unit 21 reads the read data 9R from the position indicated by PBA corresponding to the namespace NS_(M) indicated by NSID 6R via the buffer memory F_(M) corresponding to the namespace NS_(M) indicated by NSID 6R, and sends the read data 9R to the information processing devices D_(M) issuing the read command C3 via the interface unit 19.

In the present embodiment described above, the nonvolatile memory 5 is divided into a plurality of the namespaces NS₀ to NS_(M). The information processing devices D₀ to D_(M) can access the namespaces whose access rights are granted thereto. Consequently, data security can be improved.

The controller 4A of the memory system 3A controls the namespaces NS₀ to NS_(M) independently space by space. Therefore, conditions of use of each of the namespaces NS₀ to NS_(M) may be difference.

The memory system 3A associates the LBA, PBA, and NSID with each other, and thus, even if the same LBA sent from a plurality of independent information processing devices is received, the data can be distinguished based on the NSID.

In each of the above embodiments, data in a table format can be implemented as a different data structure such as a list format.

Third Embodiment

In the present embodiment, the information processing systems 1 and 1A explained in the first and second embodiments are further explained in detail.

FIG. 9 is a block diagram showing of an example of a detail structure of the information processing system 1 according to the present embodiment.

In FIG. 9 , the information processing system 1B includes an information processing device 2B and a memory system 3B. The information processing system 1B may include a plurality of information processing devices as in the second embodiment. That is, the information processing devices 2 and D0 to DM of the first and second embodiments correspond to the information processing devices 2B.

The memory systems 3 and 3A according to the first and second embodiments correspond to the memory system 3B.

The processor 11 of the first and second embodiments corresponds to CPU 43F and 43B.

The address translation tables T₀ to T_(M) according to the first embodiment and the translation table 20 of the second embodiment correspond to a LUT 45.

The memory unit 10 of the first and second embodiments corresponds to a DRAM 47.

The interface unit 19 according to the second embodiment corresponds to a host interface 41 and a host interface controller 42.

The buffer memories F₀ to F_(M) of the first and second embodiments correspond to a write buffer WB and read buffer RB.

The information processing device 2B functions as a host device.

The controller 4 includes a front end 4F and a back end 4B.

The front end (host communication unit) 4F includes a host interface 41, host interface controller 42, encode/decode unit 44, and CPU 43F.

The host interface 41 communicates with the information processing device 2B to exchange requests (write command, read command, erase command), LBA, and data.

The host interface controller (control unit) 42 controls the communication of the host interface 41 based on the control of the CPU 43F.

The encode/decode unit (advanced encryption standard (AES)) 44 encodes the write data (plaintext) transmitted from the host interface controller 42 in a data write operation. The encode/decode unit 44 decodes encoded read data transmitted from the read buffer RB of the back end 4B in a data read operation. Note that the transmission of the write data and read data can be performed without using the encode/decode unit 44 as occasion demands.

The CPU 43F controls the above components 41, 42, and 44 of the front end 4F to control the whole function of the front end 4F.

The back end (memory communication unit) 4B includes a write buffer WB, read buffer RB, LUT unit 45, DDRC 46, DRAM 47, DMAC 48, ECC 49, randomizer RZ, NANDC 50, and CPU 43B.

The write buffer (write data transfer unit) WB stores the write data transmitted from the information processing device 2B temporarily. Specifically, the write buffer WB temporarily stores the write data until it reaches to a predetermined data size suitable for the nonvolatile memory 5.

The read buffer (read data transfer unit) RB stores the read data read from the nonvolatile memory 5 temporarily. Specifically, the read buffer RB rearranges the read data to be the order suitable for the information processing device 2B (the order of the logical address LBA designated by the information processing device 2B).

The LUT 45 is a data to translate the logical address LBA into a predetermined physical address PBA.

The DDRC 46 controls double data rate (DDR) in the DRAM 47.

The DRAM 47 is a nonvolatile memory which stores, for example, the LUT 45.

The direct memory access controller (DMAC) 48 transfers the write data and the read data through an internal bus IB. In FIG. 9 , only a single DMAC 48 is shown; however, the controller 4 may include two or more DMACs 48. The DMAC 48 may be set in various positions inside the controller 4.

The ECC (error correction unit) 49 adds an error correction code (ECC) to the write data transmitted from the write buffer WB. When the read data is transmitted to the read buffer RB, the ECC 49, if necessary, corrects the read data read from the nonvolatile memory 5 using the added ECC.

The randomizer RZ (or scrambler) disperses the write data in such a manner that the write data are not biased in a certain page or in a word line direction of the nonvolatile memory 5 in the data write operation. By dispersing the write data in this manner, the number of write can be standardized and the cell life of the memory cell MC of the nonvolatile memory 5 can be prolonged. Therefore, the reliability of the nonvolatile memory 5 can be improved. Furthermore, the read data read from the nonvolatile memory 5 passes through the randomizer RZ in the data read operation.

The NAND controller (NANDC) 50 uses a plurality of channels (four channels CH0 to CH3 are shown in the Figure) to access the nonvolatile memory 5 in parallel in order to satisfy a demand for a certain speed.

The CPU 43B controls each component above (45 to 50, and RZ) of the back end 4B to control the whole function of the back end 4B.

Note that the structure of the controller 4 shown in FIG. 9 is an example and no limitation is intended thereby.

FIG. 10 is a perspective view showing a storage system according to the present embodiment.

The storage system 100 includes the memory system 3B as an SSD.

The memory system 3B is, for example, a relatively small module of which external size will be approximately 20 mm×30 mm. Note that the size and scale of the memory system 3B is not limited thereto and may be changed into various sizes arbitrarily.

Furthermore, the memory system 3B may be applicable to the information processing device 2B as a server used in a data center or a cloud computing system employed in a company (enterprise) or the like. Thus, the memory system 3B may be an enterprise SSD (eSSD).

The memory system 3B includes a plurality of connectors (for example, slots) 30 opening upwardly, for example. Each connector 30 is a serial attached SCSI (SAS) connector or the like. With the SAS connector, a high speed mutual communication can be established between the information processing device 2B and each memory system 3B via a dual port of 6 Gbps. Note that, the connector 30 may be a PCI express (PCIe) or NVM express (NVMe).

A plurality of memory systems 3B are individually attached to the connectors 30 of the information processing device 2B and supported in such an arrangement that they stand in an approximately vertical direction. Using this structure, a plurality of memory systems 3B can be mounted collectively in a compact size, and the memory systems 3B can be miniaturized. Furthermore, the shape of each memory system 3B of the present embodiment is 2.5 inch small form factor (SFF). With this shape, the memory system 3B can be compatible with an enterprise HDD (eHDD) and the easy system compatibility with the eHDD can be achieved.

Note that the memory system 3B is not limited to the use in an enterprise HDD. For example, the memory system 3B can be used as a memory medium of a consumer electronic device such as a notebook portable computer or a tablet terminal.

As can be understood from the above, the information processing system 1B and the storage system 100 having the structure of the present embodiment can achieve a mass storage advantage with the same advantages of the first and second embodiments.

While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel embodiments described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the embodiments described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions. 

What is claimed is:
 1. A memory system comprising: a nonvolatile memory including erase unit areas; and a controller configured to control the nonvolatile memory, wherein the controller is further configured to: manage a plurality of namespaces including at least a first namespace and a second namespace; receive a first command for setting the first namespace from a host device and a second command for setting the second namespace from the host device, the first namespace and the second namespace corresponding to an LBA (logical block addressing) space, the LBA space including logical addresses, the first namespace and the second namespace respectively indicated by a first namespace ID and a second namespace ID from the host device; assign a first plurality of erase unit areas among the erase unit areas to the first namespace based on the first command; assign a second plurality of erase unit areas among the erase unit areas to the second namespace based on the second command; generate management data in which the first plurality of erase unit areas are associated with the first namespace and the second plurality of erase unit areas are associated with the second namespace; store the management data in a memory; execute garbage collection on each of the first namespace and second namespace individually; after executing the garbage collection on the first namespace, execute changing, on the basis of the number of access or data amount of the first namespace and the number of access or data amount of the second namespace, an empty erase unit area belonging to the first namespace to an erase unit area belonging to the second namespace for an assignment change, to execute wear leveling on the first namespace and the second namespace; and update the management data in the memory in response to executing the changing, the controller includes a configuration unit, the configuration unit is configured to: assign the erase unit areas to the plurality of namespaces to generate the management data, and store the management data in the memory; execute the changing the empty erase unit area which stores no data from an original namespace corresponding to the empty erase unit area to a different namespace and update the management data, the empty erase unit area created as a result of the garbage collection; and set provisioning areas for over provisioning to the plurality of namespaces individually after updating the management data, wherein the controller is further configured to receive a write command together with the first namespace ID, a writing destination, data size of write data, and write data to be stored in the nonvolatile memory.
 2. The memory system according to claim 1, wherein each of the erase unit areas is an area of a unit of data erase, the memory includes a first memory and a second memory, the controller includes a reception unit, buffer memories, the configuration unit, an address translation unit, a write unit, and garbage collection units, the first memory stores the management data indicating a relationship between the plurality of namespaces and the erase unit areas, the second memory stores address translation data items corresponding to the first namespace and the second namespace respectively, the reception unit receives, from the host device, the write command, namespace identification data, a logical address, and the write data, the buffer memories correspond to the first namespace and the second namespace respectively, the configuration unit stores the management data in the first memory, the address translation unit translates the logical address of the write data into a physical address corresponding to each of the first namespace and the second namespace indicated by the namespace identification data, the write unit writes the write data to a position indicated by the physical address in the nonvolatile memory, the write unit storing the write data in the buffer memory corresponding to the namespace indicated by the namespace identification data and then writing the write data stored in the buffer memory corresponding to the namespace indicated by the namespace identification data to the position indicated by the physical address, each of the garbage collection units executes the garbage collection on each of the first namespace and the second namespace individually, and the configuration unit executes the changing the empty erase unit area from the original namespace corresponding to the empty erase unit area to the different namespace and updates the management data, the empty erase unit area created as the result of the garbage collection executed by one of the garbage collection units.
 3. The memory system according to claim 2, wherein the configuration unit assigns erase unit areas of a predetermined amount to the plurality of namespaces individually.
 4. The memory system according to claim 2, wherein the address translation unit translates the logical address into the physical address for each of the first namespace and the second namespace.
 5. The memory system according to claim 2, wherein the address translation unit translates the logical address into the physical address based on address translation data item corresponding to each of the first namespace and the second namespace.
 6. The memory system according to claim 2, wherein the address translation unit translates the logical address into the physical address by a key-value type retrieval which uses the logical address as a key and the physical address as a value.
 7. The memory system according to claim 2, wherein the reception unit receives, from the host device, a read command, a read logical address, and read namespace identification data, the read namespace identification data indicating a read destination namespace amongst the plurality of namespaces, and the address translation unit determines a read physical address in the read destination namespace in the nonvolatile memory, the memory system further comprising a read unit which reads read data from a position indicated by the read physical address.
 8. The memory system according to claim 1, wherein the first namespace and the second namespace are management units which comply with a PCI Express standard or an NVM Express standard.
 9. The memory system according to claim 1, wherein the controller is further configured to assign a first provisioning area to the first namespace, and assign a second provisioning area to the second namespace.
 10. The memory system according to claim 9, wherein a data amount of the first namespace is different from a data amount of the second namespace, and the controller executes the over provisioning for each of the first namespace and the second namespace.
 11. The memory system according to claim 1, wherein the controller is further configured to execute the changing to execute the wear leveling between the first namespace and the second namespace.
 12. A control method of a nonvolatile memory including erase unit areas, comprising: managing a plurality of namespaces including at least a first namespace and a second namespace; receiving, by a controller, a first command for setting the first namespace from a host device and a second command for setting the second namespace from the host device, the first namespace and the second namespace corresponding to an LBA (logical block addressing) space, the LBA space including logical addresses, the first namespace and the second namespace respectively indicated by a first namespace ID and a second namespace ID from the host device assigning, by the controller, a first plurality of erase unit areas among the erase unit areas to the first namespace based on the first command; assigning, by the controller, a second plurality of erase unit areas among the erase unit areas to the second namespace based on the second command; generating, by the controller, management data in which the first plurality of erase unit areas are associated with the first namespace and the second plurality of erase unit areas are associated with the second namespace; storing, by the controller, the management data in a memory; executing, by the controller, garbage collection on each of the first namespace and second namespace individually; after executing the garbage collection on the first namespace, executing changing by the controller, on the basis of the number of access or data amount of the first namespace and the number of access or data amount of the second namespace, an empty erase unit area belonging to the first namespace to an erase unit area belonging to the second namespace for an assignment change, to execute wear leveling on the first namespace and the second namespace; updating, by the controller, the management data in the memory in response to executing the changing; and setting, by the controller, provisioning areas for over provisioning to the plurality of namespaces individually after updating the management data, wherein the method further comprises receiving, by the controller, a write command together with the first namespace ID, a writing destination, data size of write data, and write data to be stored in the nonvolatile memory.
 13. The method according to claim 12, wherein each of the erase unit areas is an area of a unit of data erase, the memory includes a first memory and a second memory, the controller includes a reception unit, buffer memories, an address translation unit, a write unit, and garbage collection units, the first memory stores the management data indicating a relationship between the plurality of namespaces and the erase unit areas, the second memory stores address translation data items corresponding to the first namespace and the second namespace respectively, the buffer memories correspond to the first namespace and the second namespace respectively, and the method comprises: receiving, by the reception unit, from the host device, the write command, namespace identification data, a logical address, and the write data; assigning, by the controller, the erase unit areas to the plurality of namespaces to generate the management data, and storing, by the controller, the management data in the first memory; translating, by the address translation unit, the logical address of the write data into a physical address corresponding to each of the first namespace and the second namespace indicated by the namespace identification data; writing, by the write unit, the write data to a position indicated by the physical address in the nonvolatile memory, the writing including storing the write data in the buffer memory corresponding to the namespace indicated by the namespace identification data and then writing the write data stored in the buffer memory corresponding to the namespace indicated by the namespace identification data to the position indicated by the physical address; executing, by each of the garbage collection units, the garbage collection on each of the first namespace and the second namespace individually; and executing, by the controller, the changing the empty erase unit area from an original namespace corresponding to the empty erase unit area to a different namespace and updating, by the controller, the management data, the empty erase unit area created as a result of the garbage collection executed by one of the garbage collection units.
 14. The method according to claim 13, wherein the assigning includes assigning erase unit areas of a predetermined amount to the plurality of namespaces individually.
 15. The method according to claim 13, wherein the translating includes translating the logical address into the physical address for the namespaces individually.
 16. The method according to claim 13, wherein the translating includes translating the logical address into the physical address based on address translation data item corresponding to each of the first namespace and the second namespace.
 17. The method according to claim 13, wherein the translating includes translating the logical address into the physical address by a key-value type retrieval which uses the logical address as a key and the physical address as a value.
 18. The method according to claim 13, further comprising: receiving, by the reception unit, from the host device, a read command, a read logical address, and read namespace identification data, the read namespace identification data indicating a read destination namespace amongst the plurality of namespaces; determining, by the address translation unit, a read physical address in the read destination namespace in the nonvolatile memory; and reading, by a read unit included in the controller, read data from a position indicated by the read physical address.
 19. The method according to claim 12, wherein the first namespace and the second namespace are management units which comply with a PCI Express standard or an NVM Express standard. 